@echo off
SETLOCAL EnableDelayedExpansion

@REM 1. 验证参数个数
IF "%~1"=="" (
    echo 没有接收到参数，请指定至少一个文件路径参数。
    exit /b 1
)
@REM 更新仓库
cd /D "%~dp0"
git pull -f
git fetch -f

@REM 2. 获取图床地址前缀
FOR /F "delims=" %%a IN ('git remote get-url origin') DO (
    SET "remoteUrl=%%a"
    SET "remoteUrl=!remoteUrl:.git=!"
    SET "remoteUrl=!remoteUrl::=/!"
    SET "remoteUrl=!remoteUrl:git@=https://!"
)
@REM 2.1 获取当前分支名称
FOR /F "delims=" %%a IN ('git branch --show-current') DO (
    SET currentBranch=%%a
)
SET "remoteRepoUrl=!remoteUrl!/raw/!currentBranch!"

@REM 3. 遍历所有参数
SET "renameResults="
SET "SEP=##"
SET "UPLOADED=false"
FOR %%f IN (%*) DO (
    SET "SKIP=0"
    @REM 3.1 验证文件是否存在
    IF NOT EXIST "%%f" (
        echo 指定的文件路径不存在：%%f
        SET "renameResults=!renameResults!!SEP!指定的文件路径不存在：%%f&echo."
        SET "SKIP=1"
    )

    IF !SKIP! EQU 0 (
        @REM 3.2 验证文件是否为图片
        SET "fileExt=%%~xf"
        IF NOT "!fileExt:~1!"=="jpg" IF NOT "!fileExt:~1!"=="jpeg" IF NOT "!fileExt:~1!"=="png" IF NOT "!fileExt:~1!"=="bmp" IF NOT "!fileExt:~1!"=="gif" IF NOT "!fileExt:~1!"=="tif" IF NOT "!fileExt:~1!"=="pcx" IF NOT "!fileExt:~1!"=="tga" IF NOT "!fileExt:~1!"=="exif" IF NOT "!fileExt:~1!"=="fpx" IF NOT "!fileExt:~1!"=="svg" IF NOT "!fileExt:~1!"=="psd" IF NOT "!fileExt:~1!"=="cdr" IF NOT "!fileExt:~1!"=="pcd" IF NOT "!fileExt:~1!"=="dxf" IF NOT "!fileExt:~1!"=="ufo" IF NOT "!fileExt:~1!"=="eps" IF NOT "!fileExt:~1!"=="ai" IF NOT "!fileExt:~1!"=="raw" IF NOT "!fileExt:~1!"=="WMF" IF NOT "!fileExt:~1!"=="webp" IF NOT "!fileExt:~1!"=="avif" IF NOT "!fileExt:~1!"=="apng" (
            echo 不支持的文件类型，仅支持图片文件：%%f
            SET "renameResults=!renameResults!!SEP!不支持的文件类型，仅支持图片文件：%%f&echo."
            SET "SKIP=1"
        )

        IF !SKIP! EQU 0 (
            @REM 3.3 计算 MD5 哈希值
            FOR /F "delims=" %%h IN ('certutil -hashfile "%%f" MD5^|findstr /V "CertUtil:"') DO (
                SET "md5Hash=%%h"
            )

            @REM 3.4. 获取当前日期并格式化为yyyy_MM_dd，用于创建文件夹
            FOR /F "tokens=1-3 delims=/:/" %%a IN ("%DATE%") DO (
                SET DATE_DIR=%%a\%%b\%%c
            )

            @REM 3.5 重命名文件
            IF NOT EXIST "%~dp0!DATE_DIR!" (
                MD "%~dp0!DATE_DIR!"
                echo 创建目录："%~dp0!DATE_DIR!"
            )
            SET "newFileName=!DATE_DIR!\!md5Hash!-%%~nf%%~xf"
            IF EXIST "%~dp0!newFileName!" (
                echo 同名文件已存在，跳过：!newFileName!
                SET "renameResults=!renameResults!!SEP!!remoteRepoUrl!/!newFileName:\=/!"
                SET "SKIP=1"
            )
            IF !SKIP! EQU 0 (
                MOVE /Y "%%f" "%~dp0!newFileName!"
                SET "renameResults=!renameResults!!SEP!!remoteRepoUrl!/!newFileName:\=/!"
                SET "UPLOADED=true"
            )
        )
    )
)

@REM 4. 提交文件到Git仓库
IF !UPLOADED! EQU true (
    git add .
    git commit -m "上传文件: %*"
    git push
)

@REM 5. 返回结果
echo 所有指定的图片文件已成功处理并上传到Git仓库。

@REM 6. 列出每个文件上传到git仓库的远程访问地址
:loop
for /f "tokens=1,* delims=%SEP%" %%a in ("!renameResults!") do (
    @REM 使用 ! 变量引用来逐个打印分割后的值
    SET "renameResults=%%b"
    IF %%a EQU "" (
        GOTO :loop
    )
    echo %%a
)
IF DEFINED renameResults GOTO :loop
ENDLOCAL
